package org.fatewa.engine.endpoint.hooks;

import org.fatewa.engine.design.hooks.EndpointHooks;
import org.springframework.context.ApplicationContext;

/**
 * 统一运行
 * @author 4everlynn
 */
public interface EndpointHookInvoker {

    enum HookType {
        /**
         * 入口点运行之前的 HOOK
         */
        BEFORE_CREATE,
        /**
         * 入口点运行之后
         */
        CREATED,
        /**
         * 动态接口导出之前
         */
        BEFORE_EXPORT
    }
    /**
     * 执行 Entrypoint Hooks
     *
     * @param hooks   待执行的Hook
     * @param context Spring Context
     * @param type 要执行的类型
     */
    void invoke(EndpointHooks hooks, ApplicationContext context, HookType type);
}
